This invention relates to computer simulation of physical processes, such as fluid flow.
High Reynolds number flow has been simulated by generating discretized solutions of the Navier-Stokes differential equations by performing high-precision floating point arithmetic operations at each of many discrete spatial locations on variables representing the macroscopic physical quantities (e.g., density, temperature, flow velocity). More recently, the differential equation approach has been replaced with what is generally known as lattice gas (or cellular) automata, in which the macroscopic-level simulation provided by solving the Navier-Stokes equations is replaced by a microscopic-level model that performs operations on particles moving between sites on a lattice.
The traditional lattice gas simulation assumes a limited number of particles at each lattice site, with the particles being represented by a short vector of bits. Each bit represents a particle moving in a particular direction. For example, one bit in the vector might represent the presence (when set to 1) or absence (when set to 0) of a particle moving along a particular direction. Such a vector might have six bits, with, for example, the values 110000 indicating two particles moving in opposite directions along the X axis, and no particles moving along the Y and Z axes. A set of collision rules governs the behavior of collisions between particles at each site (e.g., a 110000 vector might become a 001100 vector, indicating that a collision between the two particles moving along the X axis produced two particles moving away along the Y axis). The rules are implemented by supplying the state vector to a lookup table, which performs a permutation on the bits (e.g., transforming the 110000 to 001100). Particles are then moved to adjoining sites (e.g., the two particles moving along the Y axis would be moved to neighboring sites to the left and right along the Y axis).
Molvig et al. taught an improved lattice gas technique in which, among other things, many more bits were added to the state vector at each lattice site (e.g., 54 bits for subsonic flow) to provide variation in particle energy and movement direction, and collision rules involving subsets of the full state vector were employed. Molvig et al., PCT/US91/04930; Molvig et al., "Removing the Discreteness Artifacts in 3D Lattice-Gas Fluids", Proceedings of the Workshop on Discrete Kinetic Theory, Lattice Gas Dynamics, and Foundations of Hydrodynamics, World Scientific Publishing Co., Pte., Ltd., Singapore (1989); Molvig et al., "Multi-species Lattice-Gas Automata for Realistic Fluid Dynamics", Springer Proceedings in Physics, Vol. 46, Cellular Automata and Modeling of Complex Physical Systems, Springer-Verlag Berlin, Heidelberg (1990) (all hereby incorporated by reference). These improvements and others taught by Molvig et al. produced the first practical lattice-gas computer system. Discreteness artifacts that had made earlier lattice gas models inaccurate at modeling fluid flow were eliminated.
Chen et al. taught an improved simulation technique in U.S. Pat. No. 5,594,671, "Computer System For Simulating Physical Processes Using Multiple-Integer State Vectors" (which is hereby incorporated by reference). Instead of the lattice gas model in which at each lattice site, or voxel (these two terms are used interchangeably throughout this document), there is at most a single particle in any momentum state (e.g., at most a single particle moving in a particular direction with a particular energy), the system used a multi-particle technique in which, at each voxel, multiple particles could exist at each of multiple states (e.g., in an eight-bit implementation, 0-255 particles could be moving in a particular direction). The state vector, instead of being a set of bits, was a set of integers (e.g., a set of eight-bit bytes providing integers in the range of 0 to 255), each of which represented the number of particles in a given state. Thus, instead of being limited to a single particle moving in each direction at each momentum state, the system had the flexibility to model multiple particles moving in each direction at each momentum state.
Chen et al.'s use of integer state vectors made possible much greater flexibility in microscopic modeling of physical processes because much more variety was possible in the collision rules that operated on the new integer state vectors. The multi-particle technique provided a way of achieving the so-called microscopic Maxwell-Boltzmann statistics that are characteristic of many fluids.
The Chen et al. system also provided a way of simulating the interaction between fluid particles and solid objects using a new "slip" technique that extended the simulation only to the outer surface of the boundary layer around a solid object, and not through the boundary layer to the surface of the solid object. At the outer surface of the boundary layer, the collision rules governing interactions between particles and the surface allowed particles to retain tangential momentum.
Chen et al. employed both "slip" and "bounce back" collision techniques in combination to simulate surfaces with a range of skin friction, from the very high skin friction of pure "bounce back" to the very low skin friction provided by "slip". Varying fractions of the particles were treated with "bounce back" rules, and the remainder were treated with "slip" rules. The multi-particle model of Chen et al. accommodated arbitrary angular orientation of the solid boundary with respect to the lattice by allowing use of a weighted average of multiple outgoing states to assure that the average momentum of the outgoing particles was in a direction closely approximating true specular reflection.
Chen et al. described techniques for preserving energy, mass and momentum normal to the solid boundary. Momentum normal to the solid boundary was preserved using a "pushing/pulling" technique that compared the overall incoming normal momentum to the overall outgoing normal momentum and recorded the normal surplus or deficit (i.e., the amount of normal momentum that had to be made up in some way that did not introduce artifacts into the simulation). Chen et al. then used a set of pushing/pulling rules to drive the normal surplus toward zero. Particles were moved from certain out-states to other out-states so that only normal momentum was affected.
Changes in energy were accommodated by a "cooling" (or heating) technique that used a total energy counter to keep track of an energy surplus (or deficit) and cooling/heating rules to drive the surplus toward zero. Similarly, "dieting" rules were used to remove any surplus mass that accumulated as the result of one or more of the collision rules.